package com.itany.corejava.code09_集合.list集合;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月20日 10:51
 */
public class Test03_遍历 {
    public static void main(String[] args) {
        // test01();
        // test02();
        // test03();
        test04();
    }
    public static void test01(){
        List<Integer> list=new ArrayList<>(Arrays.asList(100,200,300,67,98,54,9));

        //使用普通for循环来遍历集合
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("-------------------");
        //使用增强for循环来遍历集合
        for(Integer num:list){
            System.out.println(num);
        }
        System.out.println("-------------------------------");
        //创建Iterator迭代器，将集合中的数据在迭代器中进行迭代
        Iterator<Integer> it=list.iterator();
        while(it.hasNext()){//如果仍有元素可以迭代
            Integer num=it.next();
            System.out.print(num+"\t");
        }

    }


    public static void test02(){
        // 集合中有1,3,5,6,8,9，删除索引为偶数的元素
        // 1,3,5,6,8,9
        // 3,5,6,8,9


        // List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));

        // 升序循环遍历的时候删除的是有影响的
        // for(int i=0;i<list.size();i++){
        //     if(i%2==0){
        //         list.remove(i);
        //     }
        // }
        // System.out.println(list);


        //降序遍历
        List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));
        for(int i=list.size()-1;i>=0;i--){//1,3,5,6,8,9    1,3,5,6,9   1,3,6,9   3,6,9
            Integer num=list.get(i);
            if(i%2==0){//4   3  2
                list.remove(num);
            }
        }
        System.out.println(list);

    }

    public static void test03(){
        List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));

        // 增强for循环在遍历集合的过程中不能添加或者删除集合中的元素。
        for(Integer num:list){
            // list.add(67);//添加操作，报异常：java.util.ConcurrentModificationException
            // list.remove(num);//删除操作，报异常：java.util.ConcurrentModificationException
            list.set(4,100);//将索引为4的值改为100
        }
        System.out.println(list);
    }

    public static void test04(){
        List<Integer> list=new ArrayList<>(Arrays.asList(1,3,5,6,8,9));
        Iterator<Integer> it=list.iterator();
        // System.out.println(it.hasNext());//判断是否存在下一个元素
        while(it.hasNext()){
            Integer num=it.next();
            if(num%2==0){
                //通过迭代器去删除当前迭代的元素(当前遍历的这个元素值)
                it.remove();
            }
        }
        System.out.println(list);
    }

}
